<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title>Introduction</title>
</head>

<body>
<h1>Introduction</h1>

The Rephraser Engine is an Eclipse-based library that expedites the development of refactoring tools.  It contains the following components:
<ul>
<li> The <i>refactoring</i> component allows plug-ins to easily contribute refactorings to the Eclipse user interface.
<li> The <i>virtual program graph (VPG)</i> component provides a language-independent program database and indexing infrastructure.
<li> The <i>testing</i> component provides several utility classes for constructing JUnit test suites.
</ul>

<p>These components share a common suite of utility classes, many of which are useful to clients as well.</p>

<p>The dependencies among the projects comprising the Rephraser Engine are as follows.  Note that the Refactoring component does <i>not</i>
require that the VPG component be used.</p>

<p><img src="../../images/architecture.png" border="0" /></p>

<p>"Rephraser" is an acronym which stands for
Rapid
Eclipse
Prototyping
Host for
Research on <!-- Approximate Semantic -->
            <!-- Agnostic Specified -->
Abstract
Specified
Equivalence-based
Refactoring.</p>

<h2>Features</h2>

<h3>Refactoring</h3>

<p>The Refactoring component extends the Eclipse Language ToolKit (LTK) and
<ul>
<li> contributes a Refactor menu to the workbench menu bar, as well as to the context menu for resource selections in the workbench;
<li> provides an extension point that allows refactorings to be contributed to this menu; and
<li> does not require any user interface code to be written for simple refactorings.
</ul></p>

<h3>VPG</h3>

<p>The VPG component
<ul>
<li> provides a set of base classes for building persistable program graphs;
<li> provides an indexing infrastructure by registering a resource listener and automatically updating program graphs as workspace resources change; and
<li> contributes a "(Debugging)" sub-menu to the workbench Refactoring menu, which provides various actions for viewing, analyzing, and manipulating VPG databases.
</ul></p>

<h3>Testing</h3>

<p>The Testing component
<ul>
<li> provides classes to construct a test suite (dynamically) from set of files or from a set of &quot;markers&quot; in a single file; and
<li> provides utility classes to aid in combinatorial testing.
</ul></p>

<h3>Common Components/Miscellany</h3>

<p>The Rephraser Engine also includes
<ul>
<li> classes to aid in contributing to the Eclipse Search UI (e.g., SearchResult),
<li> assorted classes to aid in writing common static analyses (e.g., SymbolTable),
<li> several utility classes (e.g., TwoKeyHashMap, Spawner, StringUtil, OffsetLength).
</ul>
</p>

</body>
</html>